const fs = require('fs').promises;
const path = require('path');

// 定义要排除的文件名
const excludedFiles = ['App.vue', 'test.vue'];
const vueTemplate = `
<template>
  
</template>

<script>
export default {
    data() {

    },
    methods: {

    },
    mounted() {

    },
}
</script>

<style scoped>

</style>
`.trim() + '\n'



// 定义要寻找的的Vue模板内容
const vueTemplateTarget = `
<template>

</template>

<script>
export default {

}
</script>

<style scoped>

</style>
`.trim() + '\n'; // 确保文件末尾有一个换行符

// 检查文件是否为应该处理的Vue文件
function shouldProcessFile(fileName) {
  // 只处理以.vue结尾的文件，并且不在排除列表中
  return path.extname(fileName).toLowerCase() === '.vue' && 
         !excludedFiles.includes(fileName);
}

// 递归遍历目录，处理符合条件的Vue文件
async function processDirectories(currentDir) {
  try {
    // 读取当前目录下的所有文件和文件夹
    const entries = await fs.readdir(currentDir, { withFileTypes: true });
    
    for (const entry of entries) {
      const fullPath = path.join(currentDir, entry.name);
      const fileName = entry.name;
      
      // 如果是目录，递归处理
      if (entry.isDirectory()) {
        await processDirectories(fullPath);
      } 
      // 如果是文件，检查是否是需要处理的Vue文件
      else if (shouldProcessFile(fileName)) {
        try {
          // 检查文件是否已存在内容
          // const existingContent = await fs.readFile(fullPath, 'utf8');
          const existingContent = await fs.readFile(fullPath, 'utf8');
          console.log('=========================');
          console.log(existingContent);
          console.log('-----------------------------------------')
          console.log(vueTemplateTarget);
          console.log('=========================')
          if (existingContent.trim() === vueTemplateTarget) {
            // 文件为空，写入模板内容
            await fs.writeFile(fullPath, vueTemplate, 'utf8');
            console.log(`已写入模板: ${fullPath}`);
          } else {
            console.log(`已存在内容，跳过: ${fullPath}`);
          }
        } catch (err) {
          if (err.code === 'ENOENT') {
            // 文件不存在，创建并写入模板
            await fs.writeFile(fullPath, vueTemplate, 'utf8');
            console.log(`已创建并写入模板: ${fullPath}`);
          } else {
            console.error(`处理文件时出错 ${fullPath}: ${err.message}`);
          }
        }
      }
      // 不是需要处理的Vue文件
      else {
        // 对于排除的Vue文件，输出排除信息
        if (path.extname(fileName).toLowerCase() === '.vue' && 
            excludedFiles.includes(fileName)) {
          console.log(`已排除: ${fullPath}`);
        }
        // 非Vue文件不做处理，也不输出信息
      }
    }
  } catch (err) {
    console.error(`处理目录时出错 ${currentDir}: ${err.message}`);
  }
}

// 从当前目录开始处理
processDirectories(process.cwd())
  .then(() => console.log('处理完成'))
  .catch(err => console.error('处理过程中发生错误:', err));
    